
/**
 * @author LKQ
 * @date 2021/11/26 20:05
 * @description 要求两次变化最大的差值，且每次只能更换一位数，那么
 * 第一次：更换最高位的那个数为9，如果已经是，那么更换次高位的，以此类推
 * 第二次：更换最高位为1，如果已经是1，那么更换次高位为0.
 *
 * 官方解答1：双重循环x, y， x=0 y=0 将所有的x=0替换为y=0, x=0, y=1 将所有的x=0替换为y=1,以此类推。
 */
public class Solution {
    public static void main(String[] args) {
        System.out.println(maxDiff(1101057));
    }

    public static int maxDiff(int num) {
        int min_num = num;
        int max_num = num;
        for (int x = 0; x < 10; ++x) {
            for (int y = 0; y < 10; ++y) {
                String res = change(num, x, y);
                // 判断是否有前导零
                if (res.charAt(0) != '0') {
                    int res_i = Integer.parseInt(res);
                    min_num = Math.min(min_num, res_i);
                    max_num = Math.max(max_num, res_i);
                }
            }
        }

        return max_num - min_num;
    }
    public static String change(int num, int x, int y) {
        StringBuffer num_s = new StringBuffer(String.valueOf(num));
        int length = num_s.length();
        for (int i = 0; i < length; i++) {
            char digit = num_s.charAt(i);
            if (digit - '0' == x) {
                num_s.setCharAt(i, (char) ('0' + y));
            }
        }
        return num_s.toString();
    }
}
